package com.spzx.common.security.annotation;


import java.lang.annotation.*;

//作用于方法上
@Target(ElementType.METHOD)
//表示注解的生命周期
@Retention(RetentionPolicy.RUNTIME)
//@Documented的主要作用是确保自定义注解的信息能够显示在生成的Java文档中。
// 默认情况下，JavaDoc工具不会包含注解的说明，但通过使用@Documented注解，
// 可以指示JavaDoc工具将特定注解的信息也包含在生成的文档中。
@Documented
//@Inherited注解的主要作用是允许子类继承父类上的某些注解。当一个类使用了被@Inherited注解修饰的自定义注解时，如果该类有子类，那么子类会自动继承这个注解
@Inherited
public @interface SpzxCache {
    //锁的前缀
    String lockKeyPrefix();//默认 "spzx:lock"

    //锁的键的国企时间 默认10秒
    int lockKeyTimeout() default 10;

    //缓存的键 前缀
    String cacheKeyPrefix();

    //缓存的过期时间
    int cacheTimeout() default 600;


    //缓存的过期时间的随机因子（解决缓存雪崩的问题  缓存雪崩：相同时间 大量缓存同时过期 同时进行新的缓存）
    int cacheRandom() default 100;

    int cacheNullTimeout() default 60;

    //布隆过滤器相关的属性
    boolean hasBloomFilter() default false;
    //布隆过滤器的key
    String bloomFilterKey() default "";

}







